/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador;

import Dao.ColaboradorJpaController;
import Dao.EventoJpaController;
import Dao.UsuarioJpaController;
import Dao.exceptions.NonexistentEntityException;
import Dao.exceptions.PreexistingEntityException;
import Logica.Colaborador;
import Logica.Evento;
import Logica.Usuario;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManagerFactory;

/**
 *
 * @author User
 */
public class ControladorColaborador {

    private EntityManagerFactory factory;
    private ConnectionFactory connection;
    private ColaboradorJpaController daoColaborador;
    private UsuarioJpaController daoUsuario;
    private EventoJpaController daoEvento;

    public ControladorColaborador() {
        connection = ConnectionFactory.getFactory();
        factory = connection.getFactoria();
        daoColaborador = new ColaboradorJpaController(factory);
        daoUsuario = new UsuarioJpaController(factory);
        daoEvento = new EventoJpaController(factory);

    }

    public boolean crearColaborador(String idColaborador, String nombre, String cargo, String telefono, String direccion,
            String email, String login, String idEvento) {
        Colaborador col = new Colaborador();
        col.setIdColaborador(idColaborador);
        col.setNombre(nombre);
        col.setCargo(cargo);
        col.setTelefono(telefono);
        col.setDireccion(direccion);
        col.setEmail(email);

        try {
            Usuario user = daoUsuario.findUsuario(login);
            col.setLogin(user);
            Evento eve = daoEvento.findEvento(idEvento);
            col.setIdEvento(eve);
            daoColaborador.create(col);
            return true;
        } catch (PreexistingEntityException ex) {
            Logger.getLogger(ControladorColaborador.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        } catch (Exception ex) {
            Logger.getLogger(ControladorColaborador.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }

    }

    public boolean eliminar(String idColaborador) {
        try {
            daoColaborador.destroy(idColaborador);
            return true;
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ControladorColaborador.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
    }

    public boolean modificar(String idColaborador, String nombre, String cargo, String telefono, String direccion,
            String email, String login, String idEvento) {
        Colaborador col = consultar(idColaborador);
        col.setCargo(cargo);
        col.setTelefono(telefono);
        col.setDireccion(direccion);
        col.setEmail(email);

        try {
            Usuario user = daoUsuario.findUsuario(login);
            col.setLogin(user);
            Evento eve = daoEvento.findEvento(idEvento);
            col.setIdEvento(eve);
            daoColaborador.edit(col);
            return true;
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ControladorColaborador.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        } catch (Exception ex) {
            Logger.getLogger(ControladorColaborador.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }

    }

    public Colaborador consultar(String idColaborador) {
        Colaborador col = daoColaborador.findColaborador(idColaborador);
        return col;
    }

    public List<Colaborador> listar() {
        List<Colaborador> colaboradores = daoColaborador.findColaboradorEntities();
        return colaboradores;
    }
}
